<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>blmc_drivers: blmc_drivers::DeviceInterface Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">blmc_drivers
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classblmc__drivers_1_1DeviceInterface.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">blmc_drivers::DeviceInterface Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>this class exists purely for logical reasons, it does not in itself implement anything.  
 <a href="classblmc__drivers_1_1DeviceInterface.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="device__interface_8hpp_source.html">device_interface.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for blmc_drivers::DeviceInterface:</div>
<div class="dyncontent">
<div class="center"><img src="classblmc__drivers_1_1DeviceInterface__inherit__graph.png" border="0" usemap="#blmc__drivers_1_1DeviceInterface_inherit__map" alt="Inheritance graph"/></div>
<map name="blmc__drivers_1_1DeviceInterface_inherit__map" id="blmc__drivers_1_1DeviceInterface_inherit__map">
<area shape="rect" id="node2" href="classblmc__drivers_1_1AnalogSensorInterface.html" title="AnalogSensorInterface class is a simple abstract interface for using blmc analog measurements. " alt="" coords="258,5,443,47"/>
<area shape="rect" id="node4" href="classblmc__drivers_1_1CanBusInterface.html" title="CanBusInterface is an abstract class that defines an API for the communication via Can bus..." alt="" coords="249,71,452,98"/>
<area shape="rect" id="node6" href="classblmc__drivers_1_1LegInterface.html" title="This class defines an interface to control a leg. " alt="" coords="263,122,439,149"/>
<area shape="rect" id="node8" href="classblmc__drivers_1_1MotorBoardInterface.html" title="MotorBoardInterface declares an API to inacte with a MotorBoard. " alt="" coords="265,173,436,215"/>
<area shape="rect" id="node10" href="classblmc__drivers_1_1MotorInterface.html" title="This class declares an interface to the motor. " alt="" coords="257,239,445,266"/>
<area shape="rect" id="node3" href="classblmc__drivers_1_1AnalogSensor.html" title="AnalogSensor class is the implementation of the above interface. " alt="" coords="500,13,685,39"/>
<area shape="rect" id="node5" href="classblmc__drivers_1_1CanBus.html" title="CanBus is the implementation of the CanBusInterface. " alt="" coords="517,71,668,98"/>
<area shape="rect" id="node7" href="classblmc__drivers_1_1Leg.html" title="The leg class is the implementation of the LegInterface. " alt="" coords="530,122,655,149"/>
<area shape="rect" id="node9" href="classblmc__drivers_1_1CanBusMotorBoard.html" title="This class CanBusMotorBoard implements a MotorBoardInterface specific to CAN networks. " alt="" coords="501,173,685,215"/>
<area shape="rect" id="node11" href="classblmc__drivers_1_1Motor.html" title="This class implements the MotorInterface. " alt="" coords="524,239,661,266"/>
<area shape="rect" id="node12" href="classblmc__drivers_1_1SafeMotor.html" title="This class is a safe implementation of the Motor class. " alt="" coords="733,239,897,266"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>this class exists purely for logical reasons, it does not in itself implement anything. </p>
<p>the purpose of this class is to provide guidelines how a device should be implemented. any device has a number of inputs and outputs, see the following diagram for an example with two inputs and outputs. </p><div class="image">
<img src="device_class_diagram.svg" alt="device_class_diagram.svg"/>
</div>
<p> generally, we expect the following functions to be implemented:</p><ul>
<li>a set function for each input (several inputs may share a set function which takes an index argument).</li>
<li>a send_if_input_changed() function which will send the inputs to the device if any of them have changed.</li>
<li>functions to access the current inputs and outputs, as well as the inputs which have been sent to the device. rather than just returning the latest elements, these function should return a ThreadsafeTimeseries of these objects, such that the user can synchronize (e.g. wait for the next element or step through them one by one such that none of them is missed) </li>
</ul>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>/workspace/software/workspace/src/catkin/hardware/blmc_drivers/include/blmc_drivers/devices/<a class="el" href="device__interface_8hpp_source.html">device_interface.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceblmc__drivers.html">blmc_drivers</a></li><li class="navelem"><a class="el" href="classblmc__drivers_1_1DeviceInterface.html">DeviceInterface</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
